home *** CD-ROM | disk | FTP | other *** search
/ PCNet 1998 May / PCnet Mayıs 1998.iso / Multimed / Program / A_Trial.exe / data.z / JMxImageObserver.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-04  |  3.6 KB  |  200 lines

  1. import java.awt.Event;
  2. import java.awt.Image;
  3. import java.awt.image.ImageObserver;
  4. import java.awt.image.MemoryImageSource;
  5. import java.awt.image.PixelGrabber;
  6.  
  7. class JMxImageObserver extends JMxMediaObserver implements ImageObserver {
  8.    public boolean m_Notify;
  9.    public boolean m_bAdjustSourceRect;
  10.    public int m_nAdjustWidth = -1;
  11.    public int m_nAdjustHeight = -1;
  12.  
  13.    int Parseflags(int var1) {
  14.       if ((var1 & 64) != 0) {
  15.          return 4;
  16.       } else if ((var1 & 128) != 0) {
  17.          return 2;
  18.       } else {
  19.          return (var1 & 32) != 0 ? 8 : 1;
  20.       }
  21.    }
  22.  
  23.    public void CheckStatus() {
  24.       this.m_Notify = true;
  25.    }
  26.  
  27.    public void LoadDone(int var1) {
  28.       super.m_OwnerMItem.SetStatus(var1);
  29.       if (this.m_Notify) {
  30.          Event var2 = new Event(this, 98987, super.m_OwnerMItem);
  31.          super.m_Player.m_EventQ.Send(var2);
  32.       }
  33.  
  34.       super.m_Player.m_MediaLoader.DecrementWaitCount(super.m_OwnerMItem.m_FirstFrame);
  35.    }
  36.  
  37.    public Image AdjustImage(Image var1) {
  38.       Image var2 = var1;
  39.       if (var1 == null) {
  40.          return null;
  41.       } else {
  42.          int var3 = var1.getWidth((ImageObserver)null);
  43.          int var4 = var1.getHeight((ImageObserver)null);
  44.          if (this.m_bAdjustSourceRect) {
  45.             int var5 = var3;
  46.             int var6 = var4;
  47.             if (this.m_nAdjustWidth != -1) {
  48.                var5 = this.m_nAdjustWidth;
  49.             } else if (var3 < super.m_Width) {
  50.                var5 = super.m_Width;
  51.             }
  52.  
  53.             if (this.m_nAdjustHeight != -1) {
  54.                var6 = this.m_nAdjustHeight;
  55.             } else if (var4 < super.m_Height) {
  56.                var6 = super.m_Height;
  57.             }
  58.  
  59.             if (var5 != var3 || var6 != var4) {
  60.                int var24 = var5 * var6;
  61.                int[] var8 = new int[var24];
  62.                int[] var9 = new int[var3 * var4];
  63.                PixelGrabber var10 = new PixelGrabber(var1, 0, 0, var3, var4, var9, 0, var3);
  64.  
  65.                try {
  66.                   var10.grabPixels();
  67.                } catch (InterruptedException var17) {
  68.                   JMxLog.Log(1, "CreateTransparentImage: PixelGrabber failed");
  69.                   return var1;
  70.                }
  71.  
  72.                int var11 = var9[0] & 16777215;
  73.                boolean var12 = false;
  74.                boolean var13 = false;
  75.                int var14 = 0;
  76.                int var15 = 0;
  77.  
  78.                for(int var28 = 0; var28 < var6; ++var28) {
  79.                   for(int var27 = 0; var27 < var5; ++var27) {
  80.                      var14 = var28 * var5 + var27;
  81.                      if (var27 < var3 && var28 < var4) {
  82.                         var15 = var28 * var3 + var27;
  83.                         int var16 = var9[var15] & 16777215;
  84.                         if (var11 != var16) {
  85.                            var8[var14] = var9[var15];
  86.                         } else {
  87.                            var8[var14] = 16777215;
  88.                         }
  89.                      } else {
  90.                         var8[var14] = 16777215;
  91.                      }
  92.                   }
  93.                }
  94.  
  95.                MemoryImageSource var31 = new MemoryImageSource(var5, var6, var8, 0, var5);
  96.                var2 = super.m_Player.createImage(var31);
  97.                Object var26 = null;
  98.                Object var25 = null;
  99.                Object var32 = null;
  100.                return var2;
  101.             }
  102.          }
  103.  
  104.          if (super.m_Transparent) {
  105.             var2 = this.CreateTransparentImage(var1);
  106.          }
  107.  
  108.          if (!this.m_bAdjustSourceRect && !super.m_Transparent && !super.m_Player.m_JVM10) {
  109.             JMxLog.Log(4, "adjust image playw " + super.m_Width + " playh " + super.m_Height + " srcW " + var3 + " srcH " + var4);
  110.             if (super.m_Width == var3 && super.m_Height == var4) {
  111.                int[] var20 = new int[var3 * var4];
  112.                PixelGrabber var22 = new PixelGrabber(var2, 0, 0, var3, var4, var20, 0, var3);
  113.  
  114.                try {
  115.                   var22.grabPixels();
  116.                   MemoryImageSource var7 = new MemoryImageSource(var3, var4, var20, 0, var3);
  117.                   var2 = super.m_Player.createImage(var7);
  118.                } catch (InterruptedException var18) {
  119.                   System.out.println("pixel grab failed ");
  120.                }
  121.  
  122.                Object var21 = null;
  123.                Object var23 = null;
  124.             }
  125.          }
  126.  
  127.          return var2;
  128.       }
  129.    }
  130.  
  131.    public boolean imageUpdate(Image var1, int var2, int var3, int var4, int var5, int var6) {
  132.       if (super.m_Player.m_MediaLoader.m_LoadAction == 4) {
  133.          return false;
  134.       } else {
  135.          int var7 = this.Parseflags(var2);
  136.          if ((var7 & 14) == 0) {
  137.             return true;
  138.          } else {
  139.             this.LoadDone(var7);
  140.             return false;
  141.          }
  142.       }
  143.    }
  144.  
  145.    protected Image CreateTransparentImage(Image var1) {
  146.       int var2 = var1.getWidth((ImageObserver)null);
  147.       int var3 = var1.getHeight((ImageObserver)null);
  148.       int[] var4 = new int[var2 * var3];
  149.       PixelGrabber var5 = new PixelGrabber(var1, 0, 0, var2, var3, var4, 0, var2);
  150.  
  151.       try {
  152.          var5.grabPixels();
  153.       } catch (InterruptedException var9) {
  154.          JMxLog.Log(1, "CreateTransparentImage: PixelGrabber failed");
  155.          return var1;
  156.       }
  157.  
  158.       int var6 = 0;
  159.  
  160.       for(int var7 = 0; var7 < var2 * var3; ++var7) {
  161.          if (var7 == 0) {
  162.             var6 = var4[0] & 16777215;
  163.          }
  164.  
  165.          int var8 = var4[var7] & 16777215;
  166.          if (var6 == var8) {
  167.             var4[var7] = var8;
  168.          }
  169.       }
  170.  
  171.       MemoryImageSource var12 = new MemoryImageSource(var2, var3, var4, 0, var2);
  172.       Image var14 = super.m_Player.createImage(var12);
  173.       Object var10 = null;
  174.       Object var11 = null;
  175.       Object var13 = null;
  176.       return var14;
  177.    }
  178.  
  179.    public JMxImageObserver(JMxPlayer var1, String var2, int var3, int var4, boolean var5, boolean var6, int var7, int var8) {
  180.       super(var1, var2, var3, var4, var5);
  181.       this.m_bAdjustSourceRect = var6;
  182.       this.m_nAdjustWidth = var7;
  183.       this.m_nAdjustHeight = var8;
  184.    }
  185.  
  186.    public void LoadNow() {
  187.       Image var1 = super.m_Player.m_Owner.getImage(super.m_Player.m_urlDefaultPath, super.m_Filename);
  188.       super.m_OwnerMItem.m_MediaObject = var1;
  189.       if (this.m_bAdjustSourceRect) {
  190.          if (super.m_Player.prepareImage(var1, this)) {
  191.             this.LoadDone(8);
  192.             return;
  193.          }
  194.       } else if (super.m_Player.prepareImage(var1, super.m_Width, super.m_Height, this)) {
  195.          this.LoadDone(8);
  196.       }
  197.  
  198.    }
  199. }
  200.